# -*- coding:utf-8 -*-
# @FileName : app\models\execution_report.py
# @Time     : 2025/11/28
# @Author   : 天空之城
"""执行报告模型文件

此模块定义执行报告模型，使用SQLAlchemy进行ORM映射。
"""
from app.extensions import db


class ExecutionReport(db.Model):
    """执行报告模型
    
    定义执行报告表结构，包含执行步骤和断言结果。
    """
    __tablename__ = 'execution_reports'
    
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 报告ID
    task_case_id = db.Column(db.Integer, db.ForeignKey('task_cases.id'), nullable=False)  # 关联的测试用例ID
    conversation_id = db.Column(db.Integer, db.ForeignKey('conversations.id'), nullable=False)  # 关联的对话ID
    steps = db.Column(db.JSON, nullable=False)  # JSON，存储每一步的操作
    assertion_passed = db.Column(db.Boolean, default=False)  # 断言是否通过
    assertion_reason = db.Column(db.Text, nullable=True)  # 模型对结果的分析
    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())  # 创建时间
    updated_at = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp())  # 更新时间
    
    # 关系
    task_case = db.relationship('TaskCase', backref=db.backref('execution_reports', lazy=True))  # 关联的测试用例
    conversation = db.relationship('Conversation', backref=db.backref('execution_reports', lazy=True))  # 关联的对话
    
    def __repr__(self):
        """返回执行报告对象的字符串表示"""
        return f'<ExecutionReport {self.id} - TaskCase {self.task_case_id}>'